# --- Stage 1: Build Stage ---
# 使用一个包含 Node.js 和 pnpm 的轻量级镜像作为构建环境
FROM node:18-alpine AS builder

# 设置工作目录
WORKDIR /app

# 拷贝 package.json 和 pnpm-lock.yaml 到工作目录
COPY package.json pnpm-lock.yaml ./

# 安装 pnpm
RUN npm install -g pnpm

# 安装项目依赖
# 使用 --frozen-lockfile 确保安装的依赖版本与 lock 文件一致
RUN pnpm install --frozen-lockfile

# 拷贝所有项目文件到工作目录
COPY . .

# 执行打包命令
RUN pnpm run build

# --- Stage 2: Production Stage ---
# 使用一个非常轻量的 Nginx 官方镜像作为生产环境
FROM nginx:alpine

# 将第一阶段（builder）打包好的 dist 目录下的所有文件，
# 拷贝到 Nginx 的默认网站根目录
COPY --from=builder /app/dist /usr/share/nginx/html

# 拷贝我们为 Docker 编写的 Nginx 配置文件，
# 覆盖掉 Nginx 镜像中默认的配置文件
COPY docker.nginx.conf /etc/nginx/conf.d/default.conf

# 暴露容器的 80 端口
EXPOSE 80

# Nginx 镜像会默认执行 `nginx -g 'daemon off;'` 启动服务，
# 所以我们不需要额外的 CMD 或 ENTRYPOINT
